<?php

/*
 * Classe Abstraite des codes activités Congés
 *
 * Code/AbstractConge.php
 */

namespace RHX\Model\Code;

use RHX\Model\Object\XData;
use RHX\Helper\RHDateTime;

class AbstractConge extends AbstractCode {

    /**
     * Constructeur
     *
     * @param array $data
     */
    public function __construct($data = array()) {
	parent::__construct($data);
	// Valeur par défaut
	$this->decompte	 = self::PAYE;
	$this->maximum	 = 5;  // Maxi 5 fois par semaine
	$this->pause	 = self::AUCUN; // Pas de pause
	$this->repas	 = self::AUCUN; // Pas de repas
    }

    /**
     * Calcul des Congés
     *
     * @param type $entree
     * @param type $sortie
     * @param type $pause
     * @param type $repas
     * @param type $taux
     * @param type $coef
     * @param type $refEntree
     * @param type $refSortie
     * @param type $param
     * @return \RHX\Model\Object\XData
     */
    public function calcul($entree, $sortie, $pause, $repas, $taux, $coef, $refEntree, $refSortie, $param = array()) {
	// Valeur de retour
	$return = new XData();

	// Valeurs Congé
	$cpValue = $param['cp'];

	// Jours de disponibilite
	$dispoDay = (isset($param['dispo'])) ? $param['dispo'] : false;

	// Calcul
	if ($dispoDay) {
	    $return->tempsDiff	 = RHDateTime::toTime(floatval($cpValue));
	    $return->tempsValeur	 = floatval($cpValue);
	    $return->montant	 = $return->tempsValeur * $taux * $coef;
	}

	return $return;
    }

}

?>
